在C++标准库中,std::unique 函数用于移除容器(如数组或向量)中的重复元素。它属于 <algorithm> 头文件。
函数原型
功能
* std::unique 会将相邻的重复元素移动到容器的末尾,并返回一个新的末尾迭代器(即不包含重复元素的部分的末尾)。
* 需要注意的是,std::unique 不会改变容器的大小,而是将剩余的重复元素保留在末尾。一般情况下会配合 erase 操作来真正移除多余的元素。
* 使用此函数前,需要先对容器进行排序(比如使用 std::sort),否则只能移除相邻的重复元素。
参数说明
* first:指向容器开始的迭代器。
* last:指向容器结束的迭代器。
* BinaryPredicate(可选):用于自定义判断条件的二元谓词函数。如果提供,自定义谓词会被用于判断相邻元素是否相等。
返回值
返回去重后不包含重复元素部分的“新末尾”迭代器。可以使用此迭代器来截断容器,达到实际去重效果。
示例代码
输出
注意事项
* std::unique 只会移除相邻的重复元素,所以使用前通常要先排序。
* 如果需要自定义去重条件,可以提供一个谓词函数,如:
适用场景
* 去除序列中的重复元素,比如在处理数据时删除重复值。
* 配合 std::sort,能够快速实现无重复的序列。
使用 std::unique 可以简洁高效地处理容器中的重复数据,并保持代码简洁明了。